home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / osrc.arc / SOCKET.H < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-05  |  4.0 KB  |  137 lines

  1. #ifndef    SOCK_STREAM
  2.  
  3. #include "global.h"
  4.  
  5. /* IP protocol numbers */
  6. #define    IPPROTO_ICMP    1
  7. #define    IPPROTO_TCP    6
  8. #define    IPPROTO_UDP    17
  9.  
  10. /* TCP port numbers */
  11. #define    IPPORT_ECHO    7    /* Echo data port */
  12. #define    IPPORT_DISCARD    9    /* Discard data port */
  13. #define    IPPORT_FTPD    20    /* FTP Data port */
  14. #define    IPPORT_FTP    21    /* FTP Control port */
  15. #define IPPORT_TELNET    23    /* Telnet port */
  16. #define IPPORT_SMTP    25    /* Mail port */
  17. #define    IPPORT_FINGER    79    /* Finger port */
  18.  
  19. /* UDP port numbers */
  20. #define    IPPORT_DOMAIN    53
  21. #define    IPPORT_REMOTE    1234    /* Pulled out of the air */
  22.  
  23. #define    AF_INET    0
  24. #define    AF_AX25    1
  25.  
  26. #define    SOCK_STREAM    0
  27. #define    SOCK_DGRAM    1
  28. #define    SOCK_RAW    2
  29.  
  30. #define    EMFILE    1
  31. #define    EBADF    2
  32. #define    EINVAL    3
  33. #define    ESOCKTNOSUPPORT    4
  34. #define    EAFNOSUPPORT    5
  35. #define    EOPNOTSUPP    6
  36. #define    EFAULT        7
  37. #define    ENOTCONN    8
  38. #define    ECONNREFUSED    9
  39. #define EAFNOSUPP    10
  40. #define    EISCONN        11
  41. #define    EWOULDBLOCK    12
  42. #define    EINTR        13
  43. #define    EADDRINUSE    14
  44. #define    ENOMEM        15
  45.  
  46. /* Berkeley format socket address structures. These things were rather
  47.  * poorly thought out, but compatibility is important (or so they say).
  48.  * Note that all the sockaddr variants must be of the same size, 16 bytes
  49.  * to be specific. Although attempts have been made to account for alignment
  50.  * requirements (notably in sockaddr_ax), porters should check each
  51.  * structure.
  52.  */
  53.  
  54. /* Generic socket address structure */
  55. struct sockaddr {
  56.     short sa_family;
  57.     char sa_data[14];
  58. };
  59.  
  60. /* This is a structure for "historical" reasons (whatever they are) */
  61. struct in_addr {
  62.     unsigned long s_addr;
  63. };
  64.  
  65. /* Socket address, DARPA Internet style */
  66. struct sockaddr_in {
  67.     short sin_family;
  68.     unsigned short sin_port;
  69.     struct in_addr sin_addr;
  70.     char sin_zero[8];
  71. };
  72.  
  73. /* AX.25 sockaddr stuff */
  74. /* Number of chars in callsign field */
  75. #define    ALEN        6
  76.  
  77. struct ax_addr {
  78.     char call[ALEN];
  79.     char ssid;
  80. };    
  81. /* Number of chars in interface field. The involved definition takes possible
  82.  * alignment requirements into account, since ax25_addr is of an odd size.
  83.  */
  84. #define    ILEN    (sizeof(struct sockaddr) - sizeof(short) - sizeof(struct ax_addr))
  85.  
  86. /* Socket address, AX.25 style */
  87. struct sockaddr_ax {
  88.     short sax_family;        /* 2 bytes */
  89.     struct ax_addr ax25_addr;
  90.     char iface[ILEN];        /* Interface name */
  91. };
  92. #define    SOCKSIZE    (sizeof(struct sockaddr))
  93.  
  94. extern int32 Ip_addr;
  95. #if    defined(__STDC__) || defined(__TURBOC__)
  96. void sockinit(void);
  97. int32 aton(char *s);
  98. int32 resolve(char *host);
  99. int socket(int af,int type,int protocol);
  100. int bind(int s,char *name,int namelen);
  101. int listen(int s,int backlog);
  102. int connect(int s,char *peername,int peernamelen);
  103. int accept(int s,char *peername,int *peernamelen);
  104. int recv_mbuf(int s,struct mbuf **bpp,int len,int flags,char *from,int *fromlen);
  105. int send_mbuf(int s,struct mbuf *bp,int flags,char *to,int tolen);
  106. int recv(int s,char *buf,int len,int flags);
  107. int recvfrom(int s,char *buf,int len,int flags,char *from,int *fromlen);
  108. int send(int s,char *buf,int len,int flags);
  109. int sendto(int s,char *buf,int len,int flags,char *to,int tolen);
  110. int getsockname(int s,char *name,int *namelen);
  111. int getpeername(int s,char *peername,int *peernamelen);
  112. int socklen(int s,int rtx);
  113. int sockkick(int s);
  114. int shutdown(int s,int how);
  115. int close_s(int s);
  116. int recvline(int s,char *buf,unsigned len);
  117. int usprintf(int s,char *fmt,...);
  118. int recvchar(int s,struct mbuf **bpp);
  119. char *inet_ntoa(int32 a);
  120. char *psocket(struct sockaddr *s);
  121. char *sockerr(int s);
  122. char *sockstate(int s);
  123. struct proc *sockowner(int s,struct proc *newowner);
  124. void freesock(struct proc *pp);
  125. #else
  126. void sockinit();
  127. int32 aton(),resolve();
  128. int socket(),bind(),listen(),connect(),accept(),recv_mbuf(),send_mbuf();
  129. int recv(),recvfrom(),send(),sendto(),getsockname(),getpeername(),socklen();
  130. int sockkick(),shutdown(),close_s(),recvline(),usprintf(),recvchar();
  131. char *inet_ntoa(),*psocket(),*sockerr(),*sockstate();
  132. struct proc *sockowner();
  133. void freesock();
  134. #endif
  135.  
  136. #endif    /* SOCK_STREAM */
  137.